package serverSide.objetoRemoto;

import java.rmi.*;
import java.rmi.server.RemoteServer;
import java.rmi.server.ServerNotActiveException;
import java.rmi.server.UnicastRemoteObject;
import java.util.*;

import repositorio.bean.Alumno;
import repositorio.interfaz.TDAManejoDatos;

// ObjetoRemoto a publicar por el server
// extiende de UnicastRemoteObject e implementa la interface
// en esta clase se implementan los metodos y todos tienen que definirse a travez de RemoteException

public class GestionAlumnos extends UnicastRemoteObject implements TDAManejoDatos {
	private static final long serialVersionUID = 1L;
	private Set<Alumno> alumnos; //Argumento

	public GestionAlumnos() throws RemoteException {
		alumnos = new HashSet<Alumno>();
		alumnos.add(new Alumno(1,"Juan"));
		alumnos.add(new Alumno(2,"Pedro"));
		alumnos.add(new Alumno(4,"Maria"));
	}
	
	public void envioAlumno(Alumno alumno) throws RemoteException 
	{
		alumnos.add(alumno);
	}

	public Alumno obtengoAlumno(int nroAlumno) throws RemoteException {
		Alumno aux;
		for(Iterator<Alumno> i = this.alumnos.iterator();i.hasNext();)
		{
			aux = i.next();
			if(aux.getNumeroAlumno()==nroAlumno)
				return aux;
		}
		throw new RemoteException("No encontre al alumno");
	}
	
	public Set<Alumno> obtengoAlumnos() throws RemoteException 
	{
		return alumnos;
	}

	@Override
	public int cantidadAlumnos() throws RemoteException{
		return alumnos.size();
	}

	@Override
	public void finTransaccion() throws RemoteException {
		System.out.println("[ORemoto] Fin de transaccion");
	}

	@Override
	public Integer sumaValores(Integer a, Integer b) throws RemoteException {
		System.out.println("[ORemoto] sumaValores");
		return (a+b);
	}
	
	
	
}
